package com.yangjiayu.miemie.util;

import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.DeserializationFeature; // 用于配置反序列化行为

public class JsonUtils {

    private static final ObjectMapper objectMapper = new ObjectMapper();

    static {
        // 配置 ObjectMapper，例如忽略未知属性，这在反序列化时很有用
        objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
        // 你可以在这里添加更多的 Jackson 配置
    }

    /**
     * 将对象转换为JSON字符串
     * @param object 要转换的对象
     * @return JSON字符串，转换失败则返回 null
     */
    public static String toString(Object object) {
        if (object == null) {
            return null;
        }
        try {
            return objectMapper.writeValueAsString(object);
        } catch (JsonProcessingException e) {
            // 在实际应用中，这里应该记录日志
            e.printStackTrace();
            return null;
        }
    }

    /**
     * 将JSON字符串转换为指定类型的对象
     * @param jsonString JSON字符串
     * @param clazz 目标对象的Class
     * @param <T> 目标对象的类型
     * @return 转换后的对象，转换失败则返回 null
     */
    public static <T> T toBean(String jsonString, Class<T> clazz) {
        if (jsonString == null || jsonString.isEmpty() || clazz == null) {
            return null;
        }
        try {
            return objectMapper.readValue(jsonString, clazz);
        } catch (JsonProcessingException e) {
            // 在实际应用中，这里应该记录日志
            e.printStackTrace();
            return null;
        }
    }
}
